package com.rightrule.rule.compile;

import com.rightrule.rule.constans.ScriptTypeEnum;

import java.util.Map;

/**
 * 编译实例抽象
 *
 * @param <T>
 */
public interface CompilableInstance<T> {

    /**
     * 获取源输入类型
     *
     * @return
     */
    ScriptTypeEnum getScriptType();


    /**
     * 执行
     *
     * @param variableMap
     * @return
     */
    Object execute(Map<String, Object> variableMap);


    /**
     * 获取编译后实例
     *
     * @return
     */
    T getCompiledInstance();
}
